﻿/**
 *
 * @file FITKAcousticsMaterialsFiber.h
 * @brief 纤维材料数据类声明
 * @author XingXuanCi (xingxuanci@diso.cn)
 * @date 2024-10-31
 *
 */
#ifndef FITKACOUSTICSMATERIALSFIBER_H
#define FITKACOUSTICSMATERIALSFIBER_H

#include "FITKAcousticsAbsMaterial.h"
#include "FITKAcousticsPhysicsAPI.h"

namespace Acoustics
{
    /**
     * @brief  纤维材料数据类声明
     * @author XingXuanCi (xingxuanci@diso.cn)
     * @date   2024-10-31
     */
    class FITKAcousticsPhysicsAPI  FITKAcousticsMaterialsFiber : public FITKAcousticsAbsMaterial
    {
        FITKCLASS(Acoustics, FITKAcousticsMaterialsFiber);
    public:
        /**
         * @brief  构造函数
         * @author XingXuanCi (xingxuanci@diso.cn)
         * @date   2024-10-31
         */
        explicit FITKAcousticsMaterialsFiber() = default;
        /**
         * @brief  析构函数
         * @author XingXuanCi (xingxuanci@diso.cn)
         * @date   2024-10-31
         */
        virtual ~FITKAcousticsMaterialsFiber() = default;
        /**
         * @brief 获取声学材料类型
         * @return AcousticsMaterialType 声学材料类型（纤维）
         * @author XingXuanCi (xingxuanci@diso.cn)
         * @date 2024-09-29
         */
        FITKAcousticsAbsMaterial::AcousticsMaterialType getAcousticsMaterialType() override;
        /**
         * @brief 获取流阻率
         * @return double 流阻率
         * @author XingXuanCi (xingxuanci@diso.cn)
         * @date 2024-09-29
         */
        double getFlowResistivity() const;
        /**
         * @brief 设置流阻率
         * @param[i] flowResistivity 流阻率
         * @author XingXuanCi (xingxuanci@diso.cn)
         * @date 2024-09-29
         */
        void setFlowResistivity(double flowResistivity);
        /**
         * @brief 获取孔隙率
         * @return double 孔隙率
         * @author XingXuanCi (xingxuanci@diso.cn)
         * @date 2024-09-29
         */
        double getPorosity() const;
        /**
         * @brief 设置孔隙率
         * @param[i] porosity 孔隙率
         * @author XingXuanCi (xingxuanci@diso.cn)
         * @date 2024-09-29
         */
        void setPorosity(double porosity);
        /**
         * @brief 获取曲折度（无量纲）
         * @return double 曲折度（无量纲）
         * @author XingXuanCi (xingxuanci@diso.cn)
         * @date 2024-09-29
         */
        double getTortuosity() const;
        /**
         * @brief 设置曲折度（无量纲）
         * @param[i] tortuosity 曲折度（无量纲）
         * @author XingXuanCi (xingxuanci@diso.cn)
         * @date 2024-09-29
         */
        void setTortuosity(double tortuosity);
        /**
         * @brief 获取热特征长度（单位m）
         * @return double 热特征长度（单位m）
         * @author XingXuanCi (xingxuanci@diso.cn)
         * @date 2024-09-29
         */
        double getThermalLength() const;
        /**
         * @brief 设置热特征长度（单位m）
         * @param[i] thermalLength 热特征长度（单位m）
         * @author XingXuanCi (xingxuanci@diso.cn)
         * @date 2024-09-29
         */
        void setThermalLength(double thermalLength);
        /**
         * @brief 获取粘性特征长度（单位m）
         * @return double 粘性特征长度（单位m）
         * @author XingXuanCi (xingxuanci@diso.cn)
         * @date 2024-09-29
         */
        double getViscousLength() const;
        /**
         * @brief 设置粘性特征长度（单位m）
         * @param[i] viscousLength 粘性特征长度（单位m）
         * @author XingXuanCi (xingxuanci@diso.cn)
         * @date 2024-09-29
         */
        void setViscousLength(double viscousLength);
        /**
         * @brief 获取阻尼损耗因子
         * @return double 阻尼损耗因子
         * @author XingXuanCi (xingxuanci@diso.cn)
         * @date 2024-09-29
         */
        double getLossFactor() const;
        /**
         * @brief 设置阻尼损耗因子
         * @param[i] lossFactor 阻尼损耗因子
         * @author XingXuanCi (xingxuanci@diso.cn)
         * @date 2024-09-29
         */
        void setLossFactor(double lossFactor);
        /**
        * @brief 复制数据对象,深拷贝，数据id不拷贝
        * @param[i] obj 被拷贝的对象
        * @return 是否执行成功
        * @author XingXuanCi (xingxuanci@diso.cn)
        * @date 2024-11-15
        */
        virtual bool copy(FITKAbstractDataObject* obj) override;
         
    private:
         
        /**
         * @brief  纤维-流阻率
         * @author XingXuanCi (xingxuanci@diso.cn)
         * @date   2024-09-29
         */
        double _flowResistivity{ 0.0 };
        /**
         * @brief  纤维-孔隙率
         * @author XingXuanCi (xingxuanci@diso.cn)
         * @date   2024-09-29
         */
        double _porosity{ 0.0 };
        /**
         * @brief  纤维-曲折度（无量纲）
         * @author XingXuanCi (xingxuanci@diso.cn)
         * @date   2024-09-29
         */
        double _tortuosity{ 0.0 };
        /**
         * @brief  纤维-热特征长度（单位m）
         * @author XingXuanCi (xingxuanci@diso.cn)
         * @date   2024-09-29
         */
        double _thermalLength{ 0.0 };
        /**
         * @brief  纤维-粘性特征长度（单位m）
         * @author XingXuanCi (xingxuanci@diso.cn)
         * @date   2024-09-29
         */
        double _viscousLength{ 0.0 };
        /**
         * @brief  纤维-阻尼损耗因子
         * @author XingXuanCi (xingxuanci@diso.cn)
         * @date   2024-09-29
         */
        double _lossFactor{ 0.0 };
         
    };
}

#endif // FITKACOUSTICSMATERIALSFIBER_H
